package com.telit.firecommand.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;


@Data
public class TsTaskInfoVo {

    //主键
    @ApiModelProperty("任务主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    //任务编号
    @ApiModelProperty("任务编号")
    private String taskCode;

    //任务标题
    @ApiModelProperty("任务标题")
    private String taskTitle;

    //任务内容
    @ApiModelProperty("任务内容")
    private String taskContent;

    //任务开始时间
    @ApiModelProperty("任务开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    //任务结束时间
    @ApiModelProperty("任务结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    //任务类型;1巡护任务，2巡林任务，3巡航任务
    @ApiModelProperty("任务类型;1巡护任务，2巡林任务，3巡航任务")
    private Integer taskType;

    //二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务
    @ApiModelProperty("二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务")
    private Integer taskTypeGrade;

    //任务类型;1巡护任务，2巡林任务，3巡航任务
    @ApiModelProperty("任务类型;1巡护任务，2巡林任务，3巡航任务")
    private String taskTypeName;

    //二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务
    @ApiModelProperty("二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务")
    private String taskTypeGradeName;

    //任务状态;1待执行，2执行中，3已完成
    @ApiModelProperty("任务状态;1待执行，2执行中，3已完成")
    private Integer state;

    @ApiModelProperty("任务状态;1待执行，2执行中，3已完成")
    private String stateName;

    //行政区划
    @ApiModelProperty("行政区划")
    private String district;

    //责任区
    @ApiModelProperty("责任区")
    private String zoneCode;

    //发布单位
    @ApiModelProperty("发布单位")
    private String createUnit;

    //创建人(发布人)
    @ApiModelProperty("创建人(发布人)")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long createBy;

    @ApiModelProperty("创建人(发布人)姓名")
    private String createName;

    //创建时间;任务下发时间
    @ApiModelProperty("创建时间;任务下发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    //任务截止时间
    @ApiModelProperty("任务截止时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date cutOffTime;

    //执行人ID
    @ApiModelProperty("执行人ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long personId;

    @ApiModelProperty("执行人姓名")
    private String personName;

    //下发执行ID
    @ApiModelProperty("下发执行ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long arrangeId;

    @ApiModelProperty("是否逾期;0否，1是")
    private int beOverdue;

    //指定地点信息（指定巡护任务时返回）
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "指定地点信息（指定巡护任务时返回）")
    private AppointVo appointVo;

    //事件核实信息（事件核实任务时返回）
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "事件核实信息（事件核实任务时返回）")
    private ExceptionVo exceptionVo;

}
